package andy.demo.thread;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;

/*
 * 
 * setDeamon(true);//设为守护线程,
 * 用户线程：Java虚拟机在它所有用户线程已经离开后自动离开。
 * 守护线程：如果没有用户线程在运行，那么就会自动离开。
 * 
 * yield();//当前线程让出执行时间片
 * setPriority();//设置线程的优先级。java的线程调度是抢占式的，高优化级的线程**更有机会(不是绝对)**获得运行的机会。
 */
public class MultiThread_DaemonTeset {

    /**
     * @param args
     */
    public static void main(String[] args) {

        System.out.println("------0------");

        MyThread1 mt = new MyThread1("mt");
        mt.setDaemon(true);
        mt.start();


        System.out.println("------1------");
        
        System.out.println("main_name:" + Thread.currentThread().getName());
        
        try {
            System.in.read();// 接受输入，使程序在此停顿，一旦接收到用户输入，main线程结束，守护线程自动结束
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

        
        
    }


}


class MyThread1 extends Thread {
    public MyThread1(String name) {
        super(name);
    }

    public void run() {
        while (true) {
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (isDaemon()) {
                System.out.println("isDaemon_my_name:" + getName());
            } else {
                System.out.println("my_name:" + getName());
            }

        }
        
    }
}
